package com.bsj.power.common.config.redis;

/**
 * @author yinhao
 * @version 1.0
 * @description redis常量类
 * @date 2024/4/17
 */
public interface RedisConstant {

    /**
     * 负责人员信息大KEY
     */
    String PERSONNEL_REDIS_KEY = "PERSONNEL:INFO:";

    /**
     * 作业人员信息大KEY
     */
    String WORK_PERSONNEL_REDIS_KEY = "WORK:PERSONNEL:INFO:";

    /**
     * 智慧绑卡大KEY
     * 小KEY有设备号与工号两种
     */
    String BIND_CARD_REDIS_KEY = "BIND:CARD:INFO:";

    /**
     * 智慧绑卡工号KEY
     */
    String BIND_CARD_REDIS_EMP_NO_KEY = "BIND:CARD:EMP:NO:";

    /**
     * 智慧绑卡设备号KEY
     */
    String BIND_CARD_REDIS_DEVICE_NAME_KEY = "BIND:CARD:DEVICE:NAME:";

    /**
     * 定位设备大KEY
     */
    String LOCATION_DEVICE_REDIS_KEY = "LOCATION:DEVICE:INFO:";

    /**
     * 围栏大KEY
     */
    String PATH_REDIS_KEY = "PATH:INFO:";

    /**
     * 围栏也视频设备关联KEY，用于围栏报警推送展示摄像头使用
     */
    String PATH_DEVICE_REDIS_KEY = "PATH:DEVICE:INFO:";

    /**
     * 围栏报警大KEY+设备号
     * field 围栏id
     * value 报警信息
     */
    String PATH_ALARM_REDIS_KEY = "PATH:ALARM:INFO:";

    /**
     * 围栏异常停留报警大KEY+设备号
     * field 围栏id
     * value 报警信息
     */
    String PATH_REMAIN_ALARM_KEY = "PATH:REMAIN:ALARM:";

    /**
     * 工单信息key Hash结构数据
     * field 工单id
     * value 工单详细
     */
    String JOB_ORDER_INFO_KEY = "JOB:ORDER:INFO";

    /**
     * 正在进行的的工单key hash结构
     * field 工单id
     * value 工单详细
     */
    String JOB_ORDER_RUN_KEY = "JOB:ORDER:RUN";

    /**
     * 每天的工单信息key Hash结构数据
     * field 工单编号
     * value 工单与质量计划详细
     */
    String JOB_ORDER_EVERYDAY_KEY = "JOB:ORDER:EVERYDAY";

    /**
     * 记录摄像头设备的回放列表key
     */
    String RECORD_INFO = "RECORD_INFO";

    /**
     * 安全运行天数起始时间
     */
    String SAFE_DAYS_BEGIN_TIME = "SAFE:DAYS:BEGIN:TIME";


    /**
     * redis摄像头设备信息前缀（string REDIS_DEVICE_INFO + deviceId）
     */
    String REDIS_DEVICE_INFO = "REDIS_DEVICE_INFO";

    /**
     * scene信息缓存（string key REDIS_SCENE_INFO + scene.name）
     */
    @Deprecated
    String REDIS_SCENE_INFO = "REDIS_SCENE_INFO";

    /**
     * redis中缓存注册注销中间状态 hash big key DEVICE_REGISTER_MID_DTO; small key did（设备数据库id）
     */
    String DEVICE_REGISTER_MID_DTO = "DEVICE_REGISTER_MID_DTO";
    /**
     * 外部OA人员管理系统人员信息同步需要使用KEY
     */
    String LOGIN_PERSON_ECOLOGY = "ecology:login:person";
    /**
     * 外部OA人员管理系统接口调用需用到TOKEN
     */
    String LOGIN_PERSON_ECOLOGY_TOKEN = "ecology:login:person:token";
    /**
     * 设备云台锁定key string结构 value：userId + "_" + userWeight
     * 前端需要userId和userWeight两个数据做处理
     */
    String PTZ_CONTROL_LOCK = "PTZ_CONTROL_LOCK";

    /**
     * 工单号key set结构 value：工单号
     */
    String JOB_NUM_SET = "JOB:NUM:INFO";

    /**
     * 缓存视频通道的session信息
     */
    String VIDEO_STREAM_SESSION = "VIDEO_STREAM_SESSION";

    /**
     * 保存直播通道的状态
     */
    String VIDEO_PLAY_STATUS = "video:play:status";

    /**
     * 检测工单人员异常
     */
    String ANOMALOUS_JOB_TASK_TIME = "anomalous:job:task:time:";

    /**
     * 服务器CPU报警阀值
     */
    String SYS_CPU_THRESHOLD = "SYS_CPU_THRESHOLD";

    /**
     * 服务器内存报警阀值
     */
    String SYS_MEMORY_THRESHOLD = "SYS_MEMORY_THRESHOLD";

    /**
     * 服务器硬盘报警阀值
     */
    String SYS_DISK_THRESHOLD = "SYS_DISK_THRESHOLD";

    /**
     * 工号最后停留的编号数值
     */
    String EMP_NO_LAST_NUMBER = "EMP:NO:LAST:NUMBER";

    /**
     * 工单定时任务时间间隔key
     */
    String WORK_SYNC_TIME = "WORK:SYNC:TIME";

    /**
     * 系统配置项数据
     */
    String SYS_CONF_MODE = "SYS:CONF:MODE";

    /**
     * 报警级别key Hash结构数据
     * field 级别
     * value 报警码集
     */
    String ALARM_LEVEL_KEY = "ALARM:LEVEL:INFO";

    /**
     * 报警组合数据缓存前缀 key "ALARM_COMBINATION" filed 报警组合的数据库id value AlarmCombinationRDS类
     */
    String ALARM_COMBINATION = "ALARM_COMBINATION";

    /**
     * 人员分组白名单key，该分组下的人员在进出围栏时不产生报警 Hash 结构
     * field 组ID
     * value 组信息，里面包含围栏ID集合
     */
    String SUPER_GROUP_AUTH = "SUPER:GROUP:AUTH";

    /**
     * 分组下对应的作业人员或者负责人信息
     * key: GROUP:PERSONNEL:INFO: + 组ID
     * field 工号
     * value 作业人员或负责人的详细信息
     */
    String GROUP_PERSONNEL_INFO = "GROUP:PERSONNEL:INFO:";

    /**
     * CVR对应的设备通道编号
     */
    String CVR_DEVICE_CHANNELS_KEY = "CVR_DEVICE_CHANNELS_KEY";

    /**
     * 连续登录已失败数量
     */
    String LOGIN_ALREADY_FAIL_NUMBER = "LOGIN:ALREADY:FAIL:NUMBER:INFO";

    /**
     * 连续登录达到预设值锁定账号
     */
    String USER_LOGIN_LOCK = "USER:LOGIN:LOCK:INFO";

    /**
     * 待绑卡信息缓存，由人脸识别后组装好绑卡信息下发指令弹卡后，等待设备回复弹卡信息再进行实际的绑卡操作
     * key：TEMP:BIND:CARD:REDIS:INFO: + 绑卡机设备ID
     * field：仓位号
     * value：绑卡信息
     */
    String TEMP_BIND_CARD_REDIS_KEY = "TEMP:BIND:CARD:REDIS:INFO:";

    /**
     * 待绑卡信息仓位缓存，由人脸识别后组装好绑卡信息下发指令弹卡后，等待设备回复弹卡信息再进行实际的修改仓位状态操作
     * key：TEMP:STOCK:REDIS:INFO: + 绑卡机设备ID
     * field：仓位号
     * value：仓位信息
     */
    String TEMP_STOCK_REDIS_KEY = "TEMP:STOCK:REDIS:INFO:";

    /**
     * 设备故障处理后重新上线需要写入fault_log完结状态
     */
    String FAULT_LOG_FINISH = "FAULT_LOG_FINISH";

    /**
     * 绑卡机设备状态数据KEY
     * key：AC:DEVICE:STATUS:DATA:INFO:
     * field：绑卡机设备ID
     * value：设备状态上报信息
     */
    String AC_DEVICE_STATUS_DATA = "AC:DEVICE:STATUS:DATA:INFO:";

    /**
     * 绑卡机设备仓位数据KEY
     * key：BIND:CARD:STOCK:DATA:INFO: + 绑卡机设备ID
     * field：仓位号
     * value：仓位信息
     */
    String BIND_CARD_STOCK_DATA = "BIND:CARD:STOCK:DATA:INFO:";

    /**
     * 敏感区域工单信息缓存 Hash结构数据
     * key+房间号
     * field 工单id
     * value 工单详细
     */
    String JOB_ROOM_NO_INFO_KEY = "JOB:ROOM:NO:INFO";

    /**
     * 第三方推送的电子围栏告警缓存KEY
     * key+设备号
     * value 时间
     */
    String ELECTRON_PATH_ALARM_KEY = "ELECTRON:PATH:ALARM:INFO";

    /**
     * 形变量
     * key SHAPE:VARIABLE:INFO+机组号
     * value 经度 纬度 高度 以英文逗号分隔
     */
    String SHAPE_VARIABLE_INFO_KEY = "SHAPE:VARIABLE:INFO";

    /**
     * 形变量结算定时任务时间间隔key
     */
    String SHAPE_VARIABLE_SYNC_TIME = "SHAPE:VARIABLE:SYNC:TIME";

    /**
     * Gpgga数据 列表结构
     * key GPGGA:DATA:INFO:+机组号
     * value Gpgga数据
     */
    String GPGGA_DATA_INFO_KEY = "GPGGA:DATA:INFO:";

    /**
     * 安防平台人员编号缓存
     * 防止扫脸多次弹卡
     */
    String EXT_EVENT_PERSON_NO_KEY = "NEW:EXT:EVENT:PERSON:NO:INFO:";

    /**
     * 设备号与人员编号的关系
     */
    String DEVICE_NAME_EXT_EVENT_PERSON_NO_BIND_KEY = "DEVICE:NAME:EXT:EVENT:PERSON:NO:BIND:INFO:";

    /**
     * 关闭直播后存入信息等待设备回复200ok以后删除直播的状态
     */
    String WAITING_REPLY_CALLID = "WAITING_REPLY_CALLID";
}
